#set( $symbol_pound = '#' )
#set( $symbol_dollar = '$' )
#set( $symbol_escape = '\' )
package ${package}.basic.module.user.service;


import ${package}.common.bean.po.User;
import ${package}.common.bean.vo.QueryBean;
import ${package}.common.bean.vo.UpdateUserVo;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * Description: userService 接口
 *
 * @author wupanhua
 * @date 2019/8/6 15:28
 *
 * <pre>
 *              ${copyright}
 *      Copyright (c) 2019. All Rights Reserved.
 * </pre>
 */
public interface UserService {

    /**
     * Description:
     * <不分页获取所有用户>
     * @author wupanhua
     * @date 11:48 2019/8/7
     * @return java.util.List<User>
     **/
    List<User> findAllUser();

    /**
     * Description:
     * <根据用户邮箱和密码查找到用户>
     * @author wupanhua
     * @date 11:50 2019/8/7
     * @param user 1
     * @return User
     **/
    User findUserByEamilAndPassword(User user);

    /**
     * Description:
     * <获得用户数据列表>
     * @author wupanhua
     * @date 11:50 2019/8/7
     * @param queryBean 1
     * @return com.github.pagehelper.PageInfo<User>
     **/
    PageInfo<User> queryUserListByLimit(QueryBean queryBean);

    /**
     * Description:
     * <新增用户>
     * @author wupanhua
     * @date 11:50 2019/8/7
     * @param user 1
     **/
    void addUser(User user);

    /**
     * Description:
     * <根据主键删除用户>
     * @author zhangwenyi
     * @date 11:51 2019/8/7
     * @param id 1
     **/
    void deleteUser(Long id);

    /**
     * Description:
     * <禁用/启用用户>
     * @author pig
     * @date 11:51 2019/8/7
     * @param user 1
     **/
    void disableOrEnableUser(User user);
    /**
     * Description:
     * <修改用户状态>
     *
     * @param user 1
     * @author ZMF
     * @date 16:26 2021/3/16
     **/
    void updateUserStatus(UpdateUserVo user);

    /**
     * Description:
     * <根据id查询用户>
     * @author pig
     * @date 11:51 2019/8/7
     * @param id 1
     * @return User
     **/
    User queryUserById(Long id);

    /**
     * Description:
     * <根据id修改用户信息>
     * @author pig
     * @date 11:52 2019/8/7
     * @param user 1
     **/
    void updateUserById(UpdateUserVo user);

    /**
     * Description:
     * <根据主键重置用户密码>
     * @author pig
     * @date 11:52 2019/8/7
     * @param keys 1
     **/
    void resetUserPassByKey(Long[] keys);

    /**
     * Description:
     * <批量删除用户>
     * @author pig
     * @date 11:52 2019/8/7
     * @param keys 1
     **/
    void removeUsersByKeys(List<Long> keys);

    /**
     * Description:
     * <查询账户是否存在>
     * @author pig
     * @date 11:53 2019/8/7
     * @param username 1
     * @param id 2
     * @return java.lang.Boolean
     **/
    Boolean userVerifyUserId(String username, Long id);

    /**
     * Description:
     * <根据用户主键获取用户信息>
     * @author 吴盼华
     * @date 11:54 2019/8/7
     * @param user 1
     * @return User
     **/
    User findUserById(User user);

    /**
     * Description:
     * <根据用户名查询用户>
     * @author ywh
     * @date 11:54 2019/8/7
     * @param username 1
     * @return User
     **/
    User findUserByUsername(String username);
}
